﻿using Autodesk.AutoCAD.Windows;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;

namespace CADTool
{
    public static class StringTool
    {
        /// <summary>
        /// 提取字符串中虽大的一组数字
        /// </summary>
        /// <param name="str">字符串</param>
        /// <returns>double</returns>
        public static double ExtractMaxNum(this string str)
        {
            double maxNumber = double.MinValue;
            string pattern = @"[-+]?\d+(\.\d+)?";  // 正则表达式，匹配数字（可以包括小数）
            MatchCollection matches = Regex.Matches(str, pattern);  // 查找所有匹配的数字
            foreach (Match match in matches)
            {
                double number = double.Parse(match.Value);  // 将匹配的数字转换为double类型
                if (number > maxNumber)
                {
                    maxNumber = number;  // 更新最大的数字
                }
            }
            return maxNumber;
        }
        public static List<string> Numbers(this string str)
        {
            List<string> tempStr = new List<string>();
            string pattern= @"[-+]?\d+(\.\d+)?";
            MatchCollection matches= Regex.Matches(str, pattern);
            foreach (Match match in matches)
            {
                tempStr.Add(match.ToString());
            }
            return tempStr;
        }
        /// <summary>
        /// 用于返回一个字符串中包含的数字个数
        /// </summary>
        /// <param name="str">字符串</param>
        /// <returns>int</returns>
        public static int ContainsNum(this string str)
        {
            string pattern = @"[-+]?\d+(\.\d+)?";  // 正则表达式，匹配数字（可以包括小数）
            MatchCollection matches = Regex.Matches(str, pattern);  // 查找所有匹配的数字
            return matches.Count;
        }
        /// <summary>
        /// 判断字符串中是否含数字
        /// </summary>
        /// <param name="str">字符串</param>
        /// <returns>bool<returns>
        public static bool IsContainNumbre(this string str)
        {
            foreach (char item in str)
            {
                if (char.IsDigit(item))
                {
                    return true;
                }
            }
            return false;
        }
    }
}
